JBoss Community Archive (Read Only)

JBoss Portal Platform 6.0

Migration notes source info

Before starting

Backup

This is critical, you need to backup all your databases.

Indexes can be rebuilt and we recommend to do so, it may however take a long time depending on the size of the portal. We recommend to keep a copy of the indexes as well.

JNDI pattern changes

In EPP 5, the JNDI pattern for datasource names had the portal container name as suffix only when there were two portal containers or more. Adding a second portal container was troublesome as it meant that a user would have to add a portal container suffix to the existing default portal container.

Starting with EPP 6, the portal container name is always suffixed to the JNDI name of the datasource.

Here are the default values for EPP6:

  • java:/jdbcidm_portal for the user storage

  • java:/jdbcjcr_portal for the JCR storage

Make sure to use those correct patterns when defining your datasources in standalone/configuration/standalone.xml.

Data migration

There is no data migration per-se, but a couple of default options have changed and needs to be changed back in order to get EPP to fully work with data stored with previous portals.

Value storage

In previous version of JPP, binary files and large text files were stored in the filesystem. In most common scenarios, only gadget images would be stored that way and in most cases a better default configuration is to store everything in database since it reduces shared file system overhead and backups. In JPP 6.0, all the JCR data is stored in the database as default. Existing customers currently have binaries stored in file-system and metadata in database, the portal needs to be configured so that data is picked from the right source.

Failing to do this change will result with ERRORs such as:

Caused by: org.exoplatform.services.jcr.impl.storage.value.ValueStorageNotFoundException: No value storage found with id portal-system

To change back the behavior, in JBOSS_HOME/standalone/configuration/gatein/configuration.properties for all nodes do the following changes:

gatein.jcr.storage.enabled=true
gatein.jcr.storage.data.dir=<<use your former value, pointing to the shared 'values' directory>>

Make sure there is no other conflicting definition of those values in the file.

You will also need to rename all directories since they will all include the name of the portal container:

values/pc -> values/pc_portal
values/system -> values/system_portal
values/wsrp -> values/wsrp_portal

values/portal-system -> values/portal-system_portal
values/portal-work -> values/portal-work_portal

Isolated mode

By default, JPP 6 allows to store data for each JCR workspace in their own tables, it's not possible to split current data into individual tables and the portal needs to be configured back to the former default to properly work.

To do so, edit: JBOSS_HOME/standalone/configuration/gatein/configuration.properties

And modify:

gatein.jcr.db-structure-type=isolated

To become:

gatein.jcr.db-structure-type=single

Index storage (cluster configuration only)

Previous versions of JPP required a shared file system to be setup in order to have a single copy of the JCR indexes across all nodes of a clustered environment. In EPP 5.2 we introduced a way to have each nodes of a cluster keep a local copy of the indexes, it is now the default option.

To keep the previous behavior you will need to uncomment in JBOSS_HOME/standalone/configuration/gatein/configuration.properties for all nodes:

# JCR
# All gatein nodes have to point to the same shared filesystem directory
gatein.clustered.data.dir=<<use your former value, pointing to the shared 'lucene' directory>>
gatein.jcr.index.changefilterclass=org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter

If you prefer to switch to the new default behavior you would need to make sure:

gatein.clustered.data.dir does not point to a shared directory, by default it points to JBOSS_HOME/standalone/data/gatein/jcr/lucene for each node.

And on the next start, JPP will rebuild the index and share on all nodes.

Security

Security

The Web Services stack used between EAP 5 and EAP 6 has changed and the implementation is now based on Apache CXF.

The configuration to setup WS-Security has changed and should be redone according to the reference guide https://docs.jboss.org/author/display/GTNPORTAL35/Securing+WSRP

Portlet Bridge

Covered in the Migration Guide here: [https://docs.jboss.org/author/display/EPP60/Migrate+Java+Server+Faces+2+%28JSF2%29+Portlets|../../../../../../../../../../display/EPP60/Migrate+Java+Server+Faces+2+%28JSF2%29+Portlets||||||||||||\||]

Portal Containers, Portal Extensions

JavaEE 6 is more strict when it comes to EAR packaging. Previous examples of portal containers and portal extensions listed utility jars in META-INF/application.xml and those will not be available without setting up the other modules Classpath depending on it.

To make the portal containers and extension work, utility JARs should be moved to a 'lib' directory (or any other packaging respecting Java EE 6 classloading expectations).

A typical package would look like:

|-- my-company-extension.ear
|   |-- my.company.extension.war
|   |-- lib
|   |   |-- my.company.extension.config.jar
|   |   `-- my.company.extension.lib.jar
|   `-- META-INF
|       |-- application.xml
|       |-- MANIFEST.MF

URL Redirect

In EPP5, URL handling was improved and the public and private qualifiers in the url no longer specified the authenticated or unauthenticated section of the portal. In order to provide backwards compatibility with older urls, accessing something like /portal/public/classic would redirect the user to /portal/classic. Accessing something like /portal/private/classic would redirect the user to /portal/classic and optionally redirect first to the login page if the user was currently unauthenticated.

In EPP6 the user will only be redirected to the login page if the redirect is to a page which requires authentication. This means that accessing /portal/private/classic will redirect the user to /portal/classic without first redirecting to the login page (since /portal/classic by default does not require authentication).

The old behaviour can be added back into EPP6 by modifying the portal's web.xml to include portal/private/* as a url-pattern in the security-constraint section. Being able to add back in this ability will be removed in future versions.

Picketlink IDM

In JPP6 there are 2 new options in Picketlink IDM configuration file JPP_HOME/gatein/gatein.ear/portal.war/WEB-INF/conf/organization/idm-configuration.xml. Those 2 options are new in JPP6 and they affect especially customers with LDAP configured as Default store. Details about options:

  • ignoreMappedMembershipTypeGroupList - This option should contain list of roles, which are mapped to Picketlink IDM as simple relationships and not as roles. It affects especially customers, who are using LDAP as Default store, because they usually need to mention all groups, which are mapped to LDAP. So for example if customer has groups /platform/* and /organization/* mapped to LDAP groups, the content of the option should look like this:

    <field name="ignoreMappedMembershipTypeGroupList">
      <collection type="java.util.ArrayList" item-type="java.lang.String">
        <value>
          <string>/platform/*</string>
        </value>
        <value>
          <string>/organization/*</string>
        </value>
      </collection>
    </field>

    For customers who are using LDAP as Read only store or who are not using
    LDAP (DB only setup), the list should be empty, so the option should be like this (This
    is also default value):

    <field name="ignoreMappedMembershipTypeGroupList">
      <collection type="java.util.ArrayList" item-type="java.lang.String">
      </collection>
    </field>
  • skipPaginationInMembershipQuery - This is boolean option with
    default value true, which means that pagination of memberships in JPP
    UI is disabled (skipped) by default. You can switch to value false if
    you have DB only setup. Switching to false will enable pagination of
    memberships in JPP UI and so it increase performance. But note that for
    DB+LDAP you shouldn't switch to false because pagination won't work
    correctly for DB+LDAP setup.

JBoss.org Content Archive (Read Only), exported from JBoss Community Documentation Editor at 2020-03-10 12:31:25 UTC, last content change 2013-01-29 12:28:32 UTC.